File system stacking is a well-documented technique for modular development of file systems. File system stacks include modules of code organized in a manner that enable operations flow through the entire stack. The stack of modules are generally executed in sequence to complete an operation. For example, a base module of a file system stack may have responsibility for managing files, and another module on the file system stack may be dedicated to encryption. During an operation, such as a write operation, encryption of data occurs first, then the encrypted data is passed along to the next level down to the base, which stores the encrypted data in a file. Thus, each level on the file system stack performs its dedicated operation and then passes data down to the next level.
File system stacking is underused in industry. One possible reason is that stacks can be difficult to manage, often because of the problems inherent in systems that allow users to combine software modules into unexpected configurations. Other problems involve the difficulty in enforcing dependencies between modules, and the fact that module stacks are usually built in ad-hoc fashion with no provision for stack re-use. Because of these and other problems, stacks may contain incompatible modules, which can introduce or aggravate system instability.